perm filename DTA11.XGP[KL,SYS] blob
sn#307747 filedate 1977-10-05 generic text, type T, neo UTF8
/FONT#0=FIX20.FNT[XGP,SYS]
/BMAR=1
/TMAR=128
/RMAR=1699
/LMAR=128
/PMAR=2065
/XLINE=4
SAIL JBR 15:10:23 Wednesday, October 5, 1977 LQ+17H.4M.59S.
DTA11.PAL[KL,SYS] Created 13:41 Thursday, March 17, 1977 LQ+5D.8H.43M.57S.
DDDDDDDDD TTTTTTTTTTTTTTT AAA 111 111
DDDDDDDDD TTTTTTTTTTTTTTT AAA 111 111
DDDDDDDDD TTTTTTTTTTTTTTT AAA 111 111
DDD DDD TTT AAA AAA 111111 111111
DDD DDD TTT AAA AAA 111111 111111
DDD DDD TTT AAA AAA 111111 111111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAAAAAAAAAAAAAA 111 111
DDD DDD TTT AAAAAAAAAAAAAAA 111 111
DDD DDD TTT AAAAAAAAAAAAAAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDD DDD TTT AAA AAA 111 111
DDDDDDDDD TTT AAA AAA 111111111 111111111
DDDDDDDDD TTT AAA AAA 111111111 111111111
DDDDDDDDD TTT AAA AAA 111111111 111111111
SAIL JBR 15:10:23 Wednesday, October 5, 1977 LQ+17H.4M.59S.
DTA11.PAL[KL,SYS] Created 13:41 Thursday, March 17, 1977 LQ+5D.8H.43M.57S.
PPPPPPPPPPPP AAA LLL
PPPPPPPPPPPP AAA LLL
PPPPPPPPPPPP AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPP PPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPPPPPPPPPPP AAA AAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAAAAAAAAAAAAAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLL
PPP AAA AAA LLLLLLLLLLLLLLL
PPP AAA AAA LLLLLLLLLLLLLLL
PPP AAA AAA LLLLLLLLLLLLLLL
KLDCP.PAL[KL,SYS] PRM11.PAL[KL,SYS] BEG11.PAL[KL,SYS] CONS11.PAL[KL,SYS] SUB11.PAL[KL,SYS]
FD11.PAL[KL,SYS] DTA11.PAL[KL,SYS] BOOT.PAL[KL,SYS] APT11.PAL[KL,SYS] BR11.PAL[KL,SYS]
SBST11.PAL[KL,SYS]
Switch Settings: L[PALX11] C[KLDCP.ATC] % I 5000S 78V 120W X[Noqueue] ↑
Fonts: F[FIX20.FNT[XGP,SYS],,]
LREC File: SAIL:KLDCP.LRC[KL,SYS]
␈↓& DTA11.PAL[KL,SYS] 10/05/77 Page 1␈↓'α
001 COMMENT ⊗ VALID 00027 PAGES
002 C REC PAGE DESCRIPTION
003 C00001 00001
004 C00003 00002 .SBTTL PROGRAM FILE LOADER, 4-SEPT-75
005 C00008 00003 PROCESS FILENAME.EXT FROM INPUT BUFFER
006 C00011 00004 DECTAPE/RP04/FLOPPY LOADER START
007 C00013 00005 LLDONE: MOV R4,DVCNT RESAVE POINTERS
008 C00015 00006 LDPRO2: JMP ACTLDC LOAD TYPE ERROR
009 C00017 00007 LDCKSM: TST LDOCTF LOADING OCTAL ?
010 C00019 00008 LOAD DONE ROUTINE PDP11 LOAD ROUTINE
011 C00021 00009 3$: TST VERIFY
012 C00022 00010 PDP-11 BINARY LOAD ROUTINE
013 C00024 00011 3$: PUSH R0
014 C00025 00012 KL10 LOAD D-RAM ROUTINE
015 C00027 00013 KL10 C-RAM ZERO
016 C00031 00014 2$: MOV LDADR,R0 SELECT C-RAM STARTING ADDRESS
017 C00032 00015 LOAD TEN CORE ZERO
018 C00034 00016 LOAD TEN DATA
019 C00036 00017 LD10VR: BMI LD10ER N-BIT SET DEPOSIT FAILED
020 C00037 00018 DEVICE FILE DIRECTORY LOOKUP
021 C00039 00019 1$: MOV (R0)+,DIRST0 STORE RAD50 NAME
022 C00041 00020 DECTAPE/FLOPPY DIRECTORY ROUTINE
023 C00042 00021 READ DEVICE FRAME SUBROUTINE
024 C00044 00022 DVEOF: TST LDCNTL EOF, PRINTING A HELP FILE ?
025 C00045 00023 RAD50 UNPACK SUBROUTINE
026 C00047 00024 DECTAPE READ/WRITE FILE ROUTINES
027 C00048 00025 DECTAPE DEVICE READ/WRITE ROUTINE
028 C00050 00026 DTSRA: ADD #3,@#TCDT +3 TO TCDT
029 C00053 00027 .SBTTL ASCR50 ASCII TO RAD50 CONVERSION ROUTINE
030 C00055 ENDMK
031 C⊗;
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 2␈↓'α
001 .SBTTL PROGRAM FILE LOADER, 4-SEPT-75
002
003 ;LOAD CONTROL FLAG WORD "LDCNTL"
004 ;BIT15=1 IS HELP, PRINT FILE READ
005 ;WORD = 0 .A10, PDP-10 LOAD
006 ; 1 .A11, PDP-11 LOAD
007 ; 2 .RAM, KL10 C-RAM ZERO
008 ; 3 .RAM, KL10 C-RAM LOAD
009 ; 4 .RAM, KL10 D-RAM LOAD
010 ; 5 .BIN, PDP-11 BIN LOAD
011 ; 6 .D10, PDP-11 LOAD DSKDMP BOOTSTRAP .D10 FILE
012 ;ACT10 .BIN LOADED AS .A11
013 ; .SAV LOADED AS .A10
014
015 ;PROGRAM DETERMINATION & LOAD CONTROL INITIALIZATION
016
017 PRM11 005 020 DVLOAD: NAMEXT ;SETUP NAME.EXT
018 PRM11 011 014 TST R0 ;ANY EXT ?
019 CONS11 004 051 BNE 4$ ;YES
020 TSTB JFILEF ;DOING "J" COMMAND ?
021 SUB11 011 055 BEQ 50$ ;NO
022 PRM11 011 018 MOV #"CM,R4 ;YES, DEFAULT EXT IS "CMD"
023 PRM11 011 019 MOV #"D ,R5
024 SUB11 029 027 BR 52$
025
026 50$: TSTB IFILEF ;DOING "I" COMMAND ?
027 SUB11 029 022 BEQ 51$ ;NO
028 PRM11 011 018 MOV #"CC,R4 ;YES, DEFAULT EXT IS "CCL"
029 PRM11 011 019 MOV #"L ,R5
030 SUB11 029 027 BR 52$
031
032 PRM11 011 018 51$: MOV LDOVRD,R4 ;ANY LOAD EXT OVERRIDE ?
033 002 036 BLE 53$ ;IF NOT, USE "A10"
034 PRM11 011 018 CMP #7,R4
035 002 037 BGE 54$ ;BRANCH UNLESS OUT OF BOUNDS
036 PRM11 011 018 53$: MOV #1,R4
037 PRM11 011 018 54$: DEC R4 ;RESULT OF 0=A10,1=A11,2,3,4=RAM,5=BIN,6=D10(DSK
;DMP)
038 PRM11 011 018 ASL R4 ;DOUBLE R4 (SINCE WE NEED 4 BYTES PER ENTRY)
039 PRM11 011 018 ASL R4 ;DOUBLE AGAIN
040 002 099 PRM11 011 019 MOV DEFEXT+2(R4),R5 ;SECOND 2 CHARACTERS OF DEFAULT EXT.
041 002 099 PRM11 011 018 MOV DEFEXT(R4),R4
042 PRM11 011 018 52$: MOV R4,EXTBF
043 PRM11 011 019 MOV R5,EXTBF+2
044 PRM11 011 017 4$: MOV #LDCNTL,R3
045 PRM11 011 017 TST (R3) ;IS THIS "HELP"
046 CONS11 030 024 BMI 12$ ;BRANCH IF "HELP". NO DEFAULT EXTENSION.
047 PRM11 011 018 MOV #TEMP+1,R4
048 PRM11 011 019 MOV #EXTBF+2,R5
049 PRM11 011 019 PRM11 011 018 MOVB (R5),(R4) ;MAKE A WORD OUT OF 2ND & 3RD CHAR
050 PRM11 011 019 PRM11 011 018 MOVB -(R5),-(R4)
051 PRM11 011 019 CMPB #'A,-(R5) ;IS FIRST CHAR AN "A" ?
052 CONS11 034 069 BEQ 6$ ;BR IF YES
053 PRM11 011 019 CMPB #'B,(R5) ;IS FIRST CHAR A "B" ?
054 CONS11 030 032 BEQ 14$ ;BR IF YES
055 PRM11 011 019 CMPB #'S,(R5) ;IS FIRST CHAR AN "S" ?
056 SUB11 010 019 BEQ 16$ ;BR IF YES
057 PRM11 011 019 CMPB #'R,(R5) ;IS FIRST CHAR AN "R" ?
058 002 075 BEQ 66$ ;BR IF YES
059 PRM11 011 019 CMPB #'D,(R5) ;IS FIRST CHAR A "D" ?
060 CONS11 013 027 BEQ 21$
061 5$: TST LDOVRD ;ANY LOAD EXT OVERRIDE ?
062 CONS11 030 024 BNE 12$ ;YES
063 003 054 BR $$$NAM ;NAME.EXT ERR
064
065 PRM11 011 018 6$: CMP #"10,(R4) ;HERE IS IF FIRST CHARACTER IS AN "A"
066 CONS11 035 053 BEQ 7$ ;BR IF ".A10"
067 PRM11 011 018 CMP #"11,(R4)
068 CONS11 024 048 BNE 5$ ;BR IF NOT "A11"
069 PRM11 011 017 MOV #1,(R3) ;"A11"
070 CONS11 030 024 BR 12$
071
072 PRM11 011 017 7$: CLR (R3) ;A10. SETUP LOAD CONTROL
073 CONS11 030 024 BR 12$
074
075 PRM11 011 018 66$: CMP #"AM,(R4) ;"R" SEEN
076 CONS11 024 048 BNE 5$ ;BR IF NOT ".RAM"
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 2.1␈↓'α
077 PRM11 011 017 MOV #2,(R3) ;"RAM"
078 12$: TST LDOVRD ;ANY LOAD EXT OVERRIDE ?
079 CONS11 030 011 BEQ 20$ ;NO
080 PRM11 011 014 MOV LDOVRD,R0 ;SET LOAD CONTROL ACCORDINGLY
081 PRM11 011 014 DEC R0
082 PRM11 011 014 PRM11 011 017 MOV R0,(R3)
083 018 003 20$: JMP DEVFIL ;GO GET FILE & LOAD
084
085 PRM11 011 018 14$: CMP #"IN,(R4) ;IS EXTENSION ".BIN" ?
086 CONS11 024 048 BNE 5$ ;BR IF NO
087 PRM11 011 017 MOV #5,(R3) ;YES, SET LOAD CONTROL
088 CONS11 030 024 BR 12$
089
090 PRM11 011 018 16$: CMP #"AV,(R4) ;IS EXTENSION ".SAV" ?
091 CONS11 035 053 BEQ 7$ ;YES, ACT10 TREATS AS ".A10"
092 CONS11 024 048 BR 5$
093
094 PRM11 011 018 21$: CMP #"10,(R4) ;IS EXTENSION ".D10" ?
095 CONS11 024 048 BNE 5$ ;NO, GO REPORT ERROR
096 PRM11 011 017 MOV #6,(R3) ;YES, SET LOAD CONTROL
097 CONS11 030 024 BR 12$
098
099 DEFEXT: .ASCII /A10 /
100 .ASCII /A11 /
101 .ASCII /RAM /
102 .ASCII /RAM /
103 .ASCII /RAM /
104 .ASCII /BIN /
105 .ASCII /D10 / ;FOR DSKDMP BOOT
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 3␈↓'α
001 ;PROCESS FILENAME.EXT FROM INPUT BUFFER
002
003 PRM11 011 014 $NAMEXT:MOV #NAMBF,R0 ;CLEAR NAME LOOKUP BUFFER
004 PRM11 011 015 MOV #20040,R1 ;TO SPACES
005 PRM11 011 016 MOV #5,R2
006 PRM11 011 015 PRM11 011 014 70$: MOV R1,(R0)+ ;UP TO 9 CHARS
007 PRM11 011 016 DEC R2
008 SUB11 044 085 BGT 70$
009
010 PRM11 011 016 MOV #NAMBF,R2 ;LOOKUP NAME
011 PRM11 011 015 MOV #7,R1 ;MAXIMUM OF 6 CHARS IN NAME
012 PRM11 003 029 TTISDL
013 SUB11 008 014 BCS 99$ ;LETTER, ALREADY IN R0
014 PRM11 003 018 1$: TTICHR ;GET CHAR FROM TTY BUFFER
015 CONS11 024 048 BCS 5$
016 PRM11 011 014 99$: CMPB #'.,R0
017 CONS11 002 031 BEQ 2$ ;BR IF PERIOD, NAME.EXT SEPARATOR
018 PRM11 011 014 CMPB #33,R0
019 SUB11 029 005 BEQ 97$ ;ALTMODE, SELF START
020 PRM11 011 014 CMPB #15,R0
021 SUB11 029 037 BEQ 96$ ;CR, NO EXTENSION
022 PRM11 013 013 PRM11 011 014 CMPB #SPACE,R0 ;IF SPACE, NO EXT
023 SUB11 029 037 BEQ 96$
024 PRM11 011 015 DEC R1
025 CONS11 024 048 BEQ 5$ ;BR IF MORE THAN 6 CHARS
026 PRM11 011 014 PRM11 011 016 MOVB R0,(R2)+ ;STORE CHAR
027 CONS11 002 007 BR 1$
028
029 PRM11 011 016 2$: MOV #EXTBF,R2 ;GET EXTENSION
030 PRM11 011 015 MOV #4,R1
031 PRM11 003 018 3$: TTICHR
032 CONS11 024 048 BCS 5$
033 PRM11 011 014 CMPB #33,R0
034 CONS11 030 028 BEQ 13$ ;BR IF ALTMODE
035 PRM11 011 014 CMPB #15,R0
036 SUB11 028 037 BEQ 98$ ;BR IF CR
037 PRM11 013 013 PRM11 011 014 CMPB #SPACE,R0 ;BR IF SPACE
038 SUB11 028 037 BEQ 98$
039 PRM11 011 015 DEC R1
040 CONS11 024 048 BEQ 5$ ;BR IF MORE THAN 3 CHARS
041 PRM11 011 014 PRM11 011 016 MOVB R0,(R2)+ ;STORE CHAR
042 CONS11 005 001 BR 3$
043
044 97$: COM SRTFLG ;SET SELF START FLAG
045 SUB11 029 037 BR 96$
046
047 13$: COM SRTFLG
048
049 PRM11 011 015 98$: CMP #4,R1
050 CONS11 030 016 BNE 10$
051 PRM11 011 014 96$: CLR R0
052 PRM11 008 043 10$: EXIT
053
054 $$$NAM=.
055 PRM11 004 007 5$: $PMSG ;NAME.EXT ERR
056 003 059 $$NAM
057 BEG11 002 007 JMP $CNTLC
058
059 APT11 004 006 $$NAM: .ASCIZ /NAME.EXT ERR/
060 .EVEN
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 4␈↓'α
001 ;DECTAPE/RP04/FLOPPY LOADER START
002
003 DTRPLD: CMP #5,LDCNTL ;PDP-11 .BIN FILE LOAD ?
004 004 007 BNE LLD1
005 010 003 JMP LDBIN
006
007 PRM11 005 028 LLD1: DVDATA ;LOAD FIRST BUFFER
008 004 011 BCC LLD2
009 022 001 JMP DVEOF ;EOF
010
011 LLD2:
012 .IF DF MONASB
013 TST DEVTYP
014 CONS11 002 007 BPL 1$
015 APT11 002 016 JMP ACTLD2 ;ACT10 PROCESS
016 .ENDC
017 PRM11 011 019 1$: MOV #$INBUF,R5 ;SET UP START OF CHAR BUFFER
018 PRM11 011 019 MOV R5,$INPTC
019
020 PRM11 011 018 LLD3: MOV DVCNT,R4 ;SETUP DEVICE BYTE COUNTER
021 PRM11 011 017 MOV DVADR,R3 ;SETUP DEVICE DATA BLOCK ADDRESS
022
023 PRM11 011 018 LLD4: TST R4 ;ANY DATA REMAINING ?
024 CONS11 002 031 BGT 2$ ;YES
025
026 PRM11 005 028 DVDATA ;NO, READ NEXT DEVICE BLOCK
027 004 020 BCC LLD3
028 022 001 JMP DVEOF ;END OF FILE ?
029
030 PRM11 011 017 PRM11 011 014 2$: MOVB (R3)+,R0 ;GET FRAME, ONE 7 BIT CHAR
031 PRM11 011 018 DEC R4 ;COUNT IT
032 PRM11 011 014 BIC #177600,R0
033 PRM11 011 014 TST R0 ;IS FRAME A NULL ?
034 004 023 BEQ LLD4 ;BR IF YES, DON'T STORE
035 PRM11 011 014 PRM11 011 019 MOVB R0,(R5)+ ;STORE IN BUFFER
036 PRM11 011 019 CMP R5,#$INBUF+140.
037 CONS11 002 007 BLE 1$ ;BR IF BUFFER DIDN'T OVERFLOW
038 007 033 JMP $LINERR ;REPORT BUFFER OVERFLOW
039 PRM11 011 014 1$: CMP #12,R0 ;IS CHAR A LINE FEED ?
040 005 001 BEQ LLDONE ;BR IF LINE DONE
041 004 023 BR LLD4 ;LOOP TILL LF FOUND
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 5␈↓'α
001 PRM11 011 018 LLDONE: MOV R4,DVCNT ;RESAVE POINTERS
002 PRM11 011 017 MOV R3,DVADR
003 PRM11 011 019 CLRB (R5) ;STORE A NULL TO END STRING
004 PRM11 011 019 MOV R5,$INPTR
005 INC DEVLC ;COUNT LINE
006 PRM11 011 045 MOV DEVLC,SWR ;DISPLAY
007 TST LDCNTL ;IS HELP FLAG SET ?
008 005 011 BPL LDPROC ;BR IF NO
009 APT11 002 032 JMP DAHLP ;DTA/ACT HELP
010
011 LDPROC: CLR LDOCTF ;CLEAR OCTAL LOAD FLAG
012 CLR LDZBLK
013 PRM11 011 015 MOV LDCNTL,R1 ;GET LOAD CONTROL
014 PRM11 011 019 MOV $INPTC,R5 ;SETUP INPUT POINTER
015 PRM11 011 019 PRM11 011 014 MOVB (R5)+,R0 ;GET FIRST CHAR FROM FILE
016 PRM11 011 014 CMPB #';,R0 ;IS FIRST CHAR A SEMICOLON ?
017 005 029 BEQ LDPRO1 ;YES, PROCESS COMMENT LINE
018 007 024 PRM11 011 014 CMPB LDLTR(R1),R0 ;DOES 1ST CHAR MATCH LOAD TYPE ?
019 006 003 BEQ LDPRO3 ;YES
020 CMP LDCNTL,#6 ;D10 FILES ACT LIKE A10
021 CONS11 002 007 BEQ 1$
022 TST LDCNTL ;IS THIS .A10 FILE ?
023 006 001 BNE LDPRO2 ;NO, ERROR
024 PRM11 011 014 1$: CMPB #'Z,R0 ;YES, IS FIRST CHAR A "Z" ?
025 006 001 BNE LDPRO2 ;NO, ERROR
026 COM LDZBLK ;YES, SET CORE ZERO FLAG
027 006 003 BR LDPRO3
028
029 LDPRO1: TST DEVLC ;COMMENT, IS THIS FIRST LINE ?
030 004 011 BNE LLD2 ;NO
031 PRM11 009 003 PUSH PCMDNF ;SAVE PGM CMD NO PRINT FLAG
032 PRM11 005 011 SWITCH
033 PRM11 011 014 PRM11 002 025 BIT R0,#CHAIN ;IS CHAIN SWITCH SET ?
034 CONS11 002 007 BEQ 1$ ;NO
035 MOV #-1,PCMDNF ;YES, PREVENT FILE ID PRINTOUT
036
037 PRM11 011 019 PRM11 011 015 1$: MOVB (R5)+,R1 ;PUT FILE ID LINE IN OUTPUT BUFFER
038 CONS11 002 031 BEQ 2$ ;NULL, DONE
039 PRM11 004 035 PLDBUF
040 CONS11 002 007 BR 1$
041 PRM11 009 011 2$: POP PCMDNF ;RESTORE FLAG
042 PRM11 004 039 PNTRST ;RESET OUTPUT POINTERS ANYWAY
043 004 011 BR LLD2
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 6␈↓'α
001 APT11 003 036 LDPRO2: JMP ACTLDC ;LOAD TYPE ERROR
002
003 PRM11 011 019 PRM11 011 014 LDPRO3: MOVB (R5)+,R0 ;GET 2ND CHAR
004 PRM11 011 014 CMPB #'O,R0 ;IS IT AN O ?
005 006 032 BEQ LDOCT ;YES, OCTAL DATA FORMAT LOAD
006 PRM11 011 014 CMPB #40,R0 ;IS IT A SPACE ?
007 006 001 BNE LDPRO2 ;BR IF NO
008
009 PRM11 011 015 LDCLR: MOV #LDCNT,R1 ;SETUP CONVERTED STORAGE ADDRESS
010 PRM11 011 016 LDCNV: CLR R2 ;CLEAR WORD FORMER
011 PRM11 011 019 PRM11 011 014 1$: MOVB (R5)+,R0 ;GET CHAR
012 PRM11 011 014 CMP #15,R0 ;IS IT A CR ?
013 CONS11 002 007 BEQ 1$ ;YES, IGNORE
014 PRM11 011 014 CMP #12,R0 ;IS IT A LF ?
015 006 037 BEQ LDEOL ;YES, END OF LINE
016 PRM11 011 014 CMP #54,R0 ;IS IT A COMMA ?
017 CONS11 002 031 BEQ 2$ ;YES, GO STORE WORD
018 TST LDOCTF ;LOADING OCTAL ?
019 CONS11 005 001 BNE 3$ ;YES
020 PRM11 011 016 SL R2,6 ;SHIFT WORD FORMER LEFT 6
021 PRM11 011 014 BIC #100,R0 ;CLEAR ASCIIZED BIT
022 PRM11 011 014 PRM11 011 016 4$: BIS R0,R2 ;INSERT NEW OIT
023 CONS11 002 007 BR 1$ ;LOOP TILL WORD FORMED
024
025 PRM11 011 016 PRM11 011 015 2$: MOV R2,(R1)+ ;STORE 16 BIT WORD
026 006 010 BR LDCNV ;GO DO NEXT
027
028 PRM11 011 016 3$: SL R2,3 ;OCTAL LOAD
029 PRM11 011 014 BIC #177770,R0 ;CLEAR ALL BUT NUMBER PART
030 CONS11 004 051 BR 4$
031
032 LDOCT: COM LDOCTF ;OCTAL LOAD, SET FLAG
033 006 009 BR LDCLR
034
035 APT11 004 004 LDERR: JMP ACTLDF ;LOAD ERROR
036
037 PRM11 011 016 PRM11 011 015 LDEOL: MOV R2,(R1) ;STORE CHECKSUM
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 7␈↓'α
001 LDCKSM: TST LDOCTF ;LOADING OCTAL ?
002 CONS11 002 031 BNE 2$ ;YES, NO CHECKSUM
003 PRM11 011 016 MOV #LDCNT,R2 ;CHECKSUM LOAD STORAGE
004 PRM11 011 014 CLR R0
005 PRM11 011 016 PRM11 011 014 1$: ADD (R2)+,R0
006 PRM11 011 016 PRM11 011 015 CMP R2,R1
007 CONS11 002 007 BLE 1$
008 PRM11 011 014 TST R0 ;IS CHECKSUM = 0 ?
009 CONS11 002 031 BEQ 2$ ;BR IF 0
010 APT11 004 001 JMP ACTBCK ;BAD CHECKSUM
011
012 PRM11 011 014 2$: MOV LDCNTL,R0 ;DISPATCH TO PROPER LOAD ROUTINE
013 PRM11 011 014 SL R0,1 ;DETERMINED FROM LDCNTL WORD
014 007 016 JMP @LDTYPE(R0)
015
016 015 009 LDTYPE: LDTEN ;.A10, LOAD TEN
017 008 015 LDELVN ;.A11, LOAD ELEVEN
018 013 038 LDCZRO ;.RAM, ZERO C-RAM
019 013 054 LDCRAM ;.RAM, LOAD C-RAM
020 012 006 LDDRAM ;.RAM, LOAD D-RAM
021 0 ;.BIN, DETECTED IN LINE
022 BOOT 002 006 LDBOOT ;.D10, LOAD DSKDMP BOOT INTO 11 (SAME FORMAT AS
;A10)
023
024 LDLTR: .ASCII /TEZCD T/
025
026 APT11 004 006 $$LD11: .ASCIZ /11 ERR,ADR=/
027 $$COR: .ASCIZ /COR=/
028 $$ACT: .ASCIZ /ACT=/
029 APT11 004 006 $$RAM: .ASCIZ /\RAM ERR,COR=/
030 APT11 004 006 $$TEN: .ASCIZ /\10 ERR,ADR=/
031 .EVEN
032
033 PRM11 008 006 $LINERR:PMSG <?LINE TOO LONG>
034 BEG11 002 007 JMP $CNTLC
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 8␈↓'α
001 ;LOAD DONE ROUTINE PDP11 LOAD ROUTINE
002
003 LDDONE:
004 .IF DF MONASB
005 TST DEVTYP ;LOAD DONE
006 CONS11 002 007 BMI 1$ ;BR IF ACT10 MODE
007 .ENDC
008 APT11 003 027 JMP DADONE
009
010 .LIF DF MONASB
011 APT11 003 022 1$: JMP ACTDON ;ACT10 PROCESS
012
013 ;PDP-11 CORE LOAD ROUTINE
014
015 PRM11 011 014 LDELVN: MOV LDCNT,R0 ;GET LOAD WORD COUNT
016 CONS11 002 031 BEQ 2$ ;IF 0, THIS IS TRANSFER BLOCK
017 PRM11 011 016 MOV #LDATA,R2 ;SETUP DATA PICKUP POINTER
018 PRM11 011 015 MOV LDADR,R1 ;GET LOAD MEMORY ADDRESS
019 PRM11 011 015 BIT #1,R1 ;LOAD WORD OR BYTE ?
020 CONS11 005 001 BNE 3$ ;BYTE LOAD
021
022 1$: TST VERIFY
023 CONS11 003 018 BNE 11$
024 PRM11 011 016 PRM11 011 015 19$: MOV (R2)+,(R1)+ ;MOVE WORD FROM STOR TO MEMORY
025 PRM11 011 014 13$: DEC R0 ;DECREMENT WORD COUNT
026 CONS11 002 007 BGT 1$ ;LOOP TILL ALL WORDS MOVED
027 004 011 18$: JMP LLD2 ;GO DO NEXT LOAD LINE
028
029 PRM11 011 016 PRM11 011 015 11$: CMP (R2),(R1) ;COMPARE CURRENT AGAINST FILE
030 CONS11 030 024 BEQ 12$
031 PRM11 011 014 PUSH R0
032 PRM11 004 007 $PMSG
033 007 026 $$LD11 ;"11 ERR,ADR="
034 PRM11 011 015 PRM11 011 014 MOV R1,R0
035 PRM11 004 017 PNTOCT
036
037 PRM11 004 007 $PMSG
038 007 027 $$COR ;"COR="
039 PRM11 011 016 PRM11 011 014 MOV (R2),R0
040 PRM11 004 017 PNTOCT
041
042 PRM11 004 007 $PMSG
043 007 028 $$ACT ;"ACT="
044 PRM11 011 015 PRM11 011 014 MOV (R1),R0
045 PRM11 004 017 PNTOCT
046 PRM11 004 012 PCRLF
047 PRM11 011 014 POP R0
048
049 PRM11 011 016 12$: TST (R2)+
050 PRM11 011 015 TST (R1)+
051 CONS11 030 028 BR 13$
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 9␈↓'α
001 3$: TST VERIFY
002 CONS11 039 019 BNE 31$
003
004 PRM11 011 016 PRM11 011 015 39$: MOVB (R2)+,(R1)+ ;ODD ADDRESS, BYTE LOAD
005 PRM11 011 016 PRM11 011 015 MOVB (R2)+,(R1)+ ;2 BYTES PER WORD
006 PRM11 011 014 38$: DEC R0 ;DECREMENT WORD COUNT
007 CONS11 005 001 BGT 3$ ;LOOP TILL ALL BYTES MOVED
008 008 027 BR 18$ ;GO ON TO NEXT
009
010
011 PRM11 011 019 31$: CLR R5
012 PRM11 011 014 32$: PUSH R0
013 PRM11 011 016 PRM11 011 015 CMPB (R2),(R1)
014 FD11 003 003 BEQ 33$
015
016 PRM11 004 007 $PMSG
017 007 026 $$LD11 ;"11 ERR,ADR="
018 PRM11 011 015 PRM11 011 014 MOV R1,R0
019 PRM11 004 017 PNTOCT
020
021 PRM11 004 007 $PMSG
022 007 027 $$COR ;"COR="
023 PRM11 011 016 PRM11 011 014 MOVB (R2),R0
024 PRM11 011 014 BIC #177400,R0
025 PRM11 004 018 PNTOCS
026
027 PRM11 004 013 PSPACE
028 PRM11 004 007 $PMSG
029 007 028 $$ACT ;"ACT="
030 PRM11 011 015 PRM11 011 014 MOVB (R1),R0
031 PRM11 011 014 BIC #177400,R0
032 PRM11 004 018 PNTOCS
033 PRM11 004 012 PCRLF
034 PRM11 011 014 33$: POP R0
035 PRM11 011 016 INC R2
036 PRM11 011 015 INC R1
037 PRM11 011 019 TST R5
038 009 006 BNE 38$
039 PRM11 011 019 INC R5
040 CONS11 035 028 BR 32$
041
042 PRM11 011 014 2$: MOV LDADR,R0
043 PRM11 011 014 LD11DN: MOV R0,PGOADR
044 CLR PGOCTL
045 008 003 BR LDDONE
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 10␈↓'α
001 ;PDP-11 BINARY LOAD ROUTINE
002
003 PRM11 005 028 LDBIN: DVDATA ;LOAD DEVICE BUFFER
004 LDBIN1: CLR $CKS11 ;INIT CHECKSUM
005 PRM11 005 043 DVFRAM ;READ FRAME
006 PRM11 011 014 DECB R0 ;CHECK FOR BLOCK START
007 010 004 BNE LDBIN1 ;NOT YET
008 PRM11 005 043 DVFRAM ;READ ANOTHER FRAME
009
010 PRM11 005 044 DVWRD ;GET FULL BYTE COUNT
011 PRM11 011 014 MOV R0,LBC
012 SUB #6,LBC
013 011 022 BEQ LJMP ;BYTE COUNT OF 6 IS XFER BLOCK
014 PRM11 005 044 DVWRD ;GET LOAD ADDRESS
015 PRM11 011 014 PRM11 011 019 MOV R0,R5 ;STORE LOAD ADDRESS
016
017 PRM11 005 043 LDBIN2: DVFRAM ;READ DATA FRAME
018 DEC LBC
019 010 025 BGE LDBIN3 ;BR IF MORE DATA REMAINS
020 TSTB $CKS11 ;CORRECT CHECKSUM ?
021 010 004 BEQ LDBIN1 ;BR IF GOOD CHECKSUM
022 APT11 004 006 LDBINE: PMSG <\CKSUM ERR>
023 BEG11 002 007 $LDBNE: JMP $CNTLC
024
025 LDBIN3: TST VERIFY
026 CONS11 002 007 BNE 1$
027 PRM11 011 019 CMP R5,#PRGSRT ;TRYING TO LOAD INTO KLDCP ?
028 CONS11 030 016 BLO 10$ ;NO
029 APT11 004 006 PMSG <\ADR ERR>
030 010 023 BR $LDBNE ;YES, BAD !!
031 PRM11 011 014 PRM11 011 019 10$: MOVB R0,(R5)+ ;STORE DATA 1 BYTE AT A TIME
032 010 017 BR LDBIN2 ;LOOP
033
034 PRM11 011 014 PRM11 011 019 1$: CMPB R0,(R5)
035 CONS11 005 001 BNE 3$
036 PRM11 011 019 2$: INC R5
037 010 017 BR LDBIN2
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 11␈↓'α
001 PRM11 009 003 3$: PUSH R0
002 PRM11 004 007 $PMSG
003 007 026 $$LD11 ;"11 ERR,ADR="
004
005 PRM11 011 019 PRM11 011 014 MOV R5,R0
006 PRM11 004 017 PNTOCT
007
008 PRM11 004 007 $PMSG
009 007 027 $$COR ;"COR="
010 PRM11 009 011 POP R0
011 PRM11 004 018 PNTOCS
012
013 PRM11 004 013 PSPACE
014 PRM11 004 007 $PMSG
015 007 028 $$ACT ;"ACT="
016 PRM11 011 019 PRM11 011 014 MOVB (R5),R0
017 PRM11 011 014 BIC #177400,R0
018 PRM11 004 018 PNTOCS
019 PRM11 004 012 PCRLF
020 CONS11 002 031 BR 2$
021
022 PRM11 005 044 LJMP: DVWRD ;GET POSSIBLE XFER ADDRESS
023 PRM11 009 003 PUSH R0
024 PRM11 005 043 DVFRAM
025 TSTB $CKS11 ;CORRECT CHECKSUM ?
026 010 022 BNE LDBINE ;BR IF BAD
027 PRM11 009 011 POP R0 ;SETUP START ADDRESS
028 009 043 BR LD11DN
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 12␈↓'α
001 ;KL10 LOAD D-RAM ROUTINE
002
003 ;CALLS "WDRAM" WITH R0 = D-RAM ADDRESS
004 ; R1 = LOAD DATA ADDRESS
005
006 PRM11 011 016 LDDRAM: MOV LDCNT,R2 ;GET LOAD WORD COUNT
007 CONS11 002 031 BEQ 2$ ;WC = 0, TRANSFER BLOCK
008 PRM11 011 017 MOV LDADR,R3 ;SETUP D-RAM ADDRESS
009 PRM11 011 018 MOV #LDATA,R4 ;DATA PICKUP ADDRESS
010
011 PRM11 011 017 PRM11 011 014 1$: MOV R3,R0 ;D-RAM ADDRESS TO R0
012 PRM11 011 018 PRM11 011 015 MOV R4,R1 ;DATA ADDRESS TO R1
013
014 TST VERIFY
015 CONS11 003 018 BNE 11$ ;VERIFY D-RAM
016 PRM11 007 020 WDRAM ;WRITE D-RAM
017
018 PRM11 011 017 PRM11 011 014 11$: MOV R3,R0
019 PRM11 007 019 RDRAM ;READ D-RAM
020 PRM11 011 014 PRM11 011 019 MOV R0,R5
021 PRM11 011 014 BIC #20,(R0) ;CLEAR COMPUTED PARITY
022 PRM11 011 014 PRM11 011 015 CMP (R0)+,(R1)+ ;COMPARE EVEN WORD
023 CONS11 030 011 BNE 20$
024 PRM11 011 014 BIC #20,(R0) ;CLEAR COMPUTED PARITY
025 PRM11 011 014 PRM11 011 015 CMP (R0)+,(R1)+ ;COMPARE ODD WORD
026 CONS11 030 011 BNE 20$
027 PRM11 011 014 PRM11 011 015 CMP (R0),(R1) ;COMPARE COMMON WORD
028 CONS11 030 011 BNE 20$
029 PRM11 011 017 21$: ADD #2,R3 ;TO NEXT EVEN D-RAM ADDRESS
030 PRM11 011 018 ADD #6,R4 ;SETUP NEXT DATA PICKUP ADR
031 PRM11 011 016 SUB #3,R2 ;DECREMENT WORD COUNT
032 CONS11 002 007 BGT 1$ ;BR IF NOT DONE YET
033 013 081 BR $LLD2 ;BACK FOR NEXT LOAD FILE LINE
034
035 008 003 2$: JMP LDDONE ;LOAD FINISHED
036
037 PRM11 004 007 20$: $PMSG
038 007 029 $$RAM ;"RAM ERR,COR="
039 PRM11 011 017 PRM11 011 014 MOV R3,R0
040 PRM11 011 018 PRM11 011 015 MOV R4,R1
041 PRM11 007 031 PNTDRM ;PRINT CORRECT D-RAM
042
043 PRM11 004 007 $PMSG
044 007 028 $$ACT ;"ACT="
045 PRM11 011 017 PRM11 011 014 MOV R3,R0
046 PRM11 011 019 PRM11 011 015 MOV R5,R1
047 PRM11 007 031 PNTDRM ;PRINT ACTUAL D-RAM
048 CONS11 013 027 BR 21$ ;CONTINUE
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 13␈↓'α
001 ;KL10 C-RAM ZERO
002
003 COMMENT ⊗
004
005 SBST11 002 005 RAM file. The RAM file is ascii-ized text. A RAM file consists of a
006 SBST11 002 005 Z-line, some C-lines, and some D-lines. The Z-line zeros a selected
007 region of the CRAM. Each C-line loads one or more microcode words
008 into the CRAM. The D-lines load the DRAM.
009
010 Z wc,addr,count,chksum<crlf>
011 013 024 The "Z " and the commas and crlf are literal. WC is ignored
012 SUB11 044 135 and may be an empty string. ADDR is the first location in
013 the CRAM to zero; COUNT is the number of words of CRAM to zero.
014 If COUNT is zero, nothing is zeroed (one Z line must appear
015 in the file). Chksum, as always, is the negative of the 16-bit
016 sum of all preceding fields.
017
018 C wc,addr,w0pt0,w0pt1,w0pt2,w0pt3,w0pt4,w0pt5,w1pt0....,chksum
019 013 024 WC is a multiple of 6. Six 16-bit fields are loaded into
020 each CRAM word. Note: In octal format, denoted by CO, the
021 013 024 fields above are partly reversed. They appear in the order:
022 Pt4,Pt3,Pt2,Pt1,Pt0,Pt5. This is the same format as the
023 EC and DC commands use.
024 Pt5 is the spec field. Other fields are:...
025 BEG11 002 006 A zero WC signifies the CRAM start address is in ADDR, and
026 that D-lines follow.
027
028
029 D wc,addr,w0pt0,w0pt1,w0pt2,w2tp0,w2pt1,w2pt2,....,chksum
030 013 024 WC must be a multiple of 3. Three 16-bit fields are loaded
031 SUB11 044 135 into an even-odd pair of DRAM locations specified by addr
032 (which should be even). WC=0 signifies end of file.
033
034 ⊗
035
036
037
038 PRM11 006 024 LDCZRO: MRESET ;MASTER RESET
039 TST VERIFY
040 CONS11 002 031 BNE 2$ ;NO ZEROING IF VERIFY
041 PRM11 011 015 MOV LDATA,R1 ;GET C-RAM ZERO COUNT
042 CONS11 002 031 BEQ 2$ ;0 ZERO COUNT, BYPASS ZEROING C-RAM
043 PRM11 011 014 MOV LDADR,R0 ;SETUP STARTING ADDRESS
044
045 PRM11 006 021 MICNUL ;ZERO C-RAM
046 2$: INC LDCNTL ;ADVANCE LOAD CONTROL TO C-RAM LOAD
047 013 081 BR $LLD2
048
049 ;KL10 LOAD C-RAM ROUTINE
050
051 ;CALLS "WCRAM" WITH R0 = C-RAM ADDRESS
052 ; R1 = DATA PICKUP ADDRESS
053
054 PRM11 011 016 LDCRAM: MOV LDCNT,R2 ;GET LOAD WORD COUNT
055 CONS11 002 031 BEQ 2$ ;WC = 0, TRANSFER BLOCK
056 PRM11 011 017 MOV LDADR,R3 ;SETUP C-RAM ADDRESS
057 PRM11 012 030 PRM11 011 017 BIS #BIT14,R3 ;SET SPECIAL RESET BIT
058 PRM11 011 018 MOV #LDATA,R4 ;DATA PICKUP ADDRESS
059
060 1$: TST LDOCTF ;LOADING OCTAL ?
061 CONS11 005 001 BNE 3$ ;YES
062 PRM11 011 017 PRM11 011 014 4$: MOV R3,R0 ;C-RAM ADDRESS TO R0
063 PRM11 011 018 PRM11 011 015 MOV R4,R1 ;DATA PICKUP ADDRESS TO R1
064
065 TST VERIFY
066 SUB11 011 031 BNE 41$
067 PRM11 006 018 WCRAM ;WRITE C-RAM
068 PRM11 011 017 PRM11 011 014 41$: MOV R3,R0
069 PRM11 006 019 RCRAM ;READ C-RAM BACK
070
071 PRM11 011 019 MOV #6,R5
072 PRM11 011 018 PRM11 011 015 MOV R4,R1
073 PRM11 011 014 PRM11 011 015 11$: CMP (R0)+,(R1)+ ;RAM LOADED PROPERLY ?
074 CONS11 030 024 BNE 12$ ;NO
075 PRM11 011 019 DEC R5
076 CONS11 003 018 BNE 11$
077 PRM11 011 017 42$: INC R3 ;TO NEXT C-RAM ADDRESS
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 13.1␈↓'α
078 PRM11 011 018 ADD #12.,R4 ;TO NEXT PICKUP ADDRESS
079 PRM11 011 016 SUB #6,R2 ;DECREMENT WORD COUNT, 6 11 WDS PER
080 CONS11 002 007 BGT 1$ ;BR IF NOT DONE YET
081 $LLD2=.
082 004 011 JMP LLD2 ;GET NEXT LOAD FILE LINE
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 14␈↓'α
001 PRM11 011 014 2$: MOV LDADR,R0 ;SELECT C-RAM STARTING ADDRESS
002 PRM11 006 020 WWADR ;WRITE ADDRESS TO C-RAM
003 INC LDCNTL ;ADVANCE LOAD CONTROL TO D-RAM LOAD
004 013 081 BR $LLD2
005
006 ;OCTAL C-RAM LOAD, DATA IS BACKWARDS FROM UPSIDE DOWN NORMAL
007
008 PRM11 011 018 PRM11 011 014 3$: MOV (R4),R0 ;GET WORD 0
009 PRM11 011 018 PRM11 011 018 MOV 10(R4),(R4) ;PUT WORD 5 IN 0'S PLACE
010 PRM11 011 014 PRM11 011 018 MOV R0,10(R4) ;PUT WORD 0 IN 5'S PLACE
011 PRM11 011 018 PRM11 011 014 MOV 2(R4),R0 ;GET WORD 1
012 PRM11 011 018 PRM11 011 018 MOV 6(R4),2(R4) ;PUT WORD 4 IN 1'S PLACE
013 PRM11 011 014 PRM11 011 018 MOV R0,6(R4) ;PUT WORD 1 IN 4'S PLACE
014 CONS11 004 051 BR 4$ ;NOW GO LOAD IN C-RAM
015
016 PRM11 004 007 12$: $PMSG ;"RAM ERR,COR="
017 007 029 $$RAM
018 PRM11 011 017 PRM11 011 014 MOV R3,R0
019 PRM11 011 018 PRM11 011 015 MOV R4,R1
020 PRM11 007 029 PNTCRM
021 PRM11 004 012 PCRLF
022 PRM11 004 007 $PMSG
023 007 028 $$ACT ;"ACT="
024 PRM11 011 017 PRM11 011 014 MOV R3,R0
025 PRM11 011 015 MOV #$BUFRC,R1
026 PRM11 007 029 PNTCRM
027 PRM11 004 012 PCRLF
028 SUB11 011 029 BR 42$
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 15␈↓'α
001 ;LOAD TEN CORE ZERO
002
003 ; START ADDRESS, LOW 16 BITS IN LDADR
004 ; , BITS 18 & 19 IN HI-BYTE OF LDCNT
005 ; ZERO COUNT IN LDATA
006 ; WORD COUNT SIGNIFIES NUMBER OF LDATA WORDS USED FOR ZEROING
007 ; "D10ZRO" - INCREMENTS PDP-10 ADDRESS WHILE ZEROING
008
009 PRM11 011 017 LDTEN: MOV #L10ADR+2,R3 ;SETUP BLOCK START ADDRESS POINTER
010 PRM11 011 017 CLR (R3)
011 PRM11 011 017 MOVB LDCNT+1,(R3) ;HI-BYTE OF LDCNT IS ADR BITS 18 & 19
012 PRM11 011 017 MOV LDADR,-(R3) ;SETUP ADR BITS 20-35
013
014 TST LDZBLK ;TEN CORE ZERO BLOCK ?
015 016 006 BEQ LDRDIN ;NO, LOAD DATA
016
017 PRM11 006 032 LDTENZ: SM ;START MACHINE
018 CONS11 005 001 BCC 3$
019 CONS11 027 027 JMP .XCTER ;FAILED
020 3$: TST VERIFY
021 CONS11 002 031 BNE 2$ ;DON'T ZERO IF VERIFY
022 PRM11 011 018 MOV #LDATA,R4
023 PRM11 011 016 MOVB LDCNT,R2 ;IS WC = 0 ?
024 CONS11 002 031 BEQ 2$ ;YES, NO ZEROING
025 PRM11 011 017 PRM11 011 015 MOV R3,R1 ;SETUP ADDRESS
026 PRM11 011 018 PRM11 011 014 1$: MOV (R4)+,R0 ;SETUP ZERO COUNT
027 PRM11 006 047 D10ZRO ;DEPOSIT ZEROS, CLEARING CORE
028 017 031 BCS LD10ER
029 PRM11 011 015 MOV #.DPXAD,R1
030 PRM11 011 016 DEC R2 ;COMPLETED ALL ZEROS ?
031 CONS11 002 007 BNE 1$ ;NOT YET
032
033 013 081 2$: BR $LLD2 ;ALL REQUESTED CORE ZEROED.
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 16␈↓'α
001 ;LOAD TEN DATA
002
003 ;CALLS "DPOSVR" WITH R0 = LOAD DATA ADDRESS
004 ; R1 = PDP-10 ADDRESS
005
006 PRM11 011 016 LDRDIN: MOVB LDCNT,R2 ;GET LOAD WORD COUNT
007 CONS11 002 031 BEQ 2$ ;WC = 0, TRANSFER BLOCK
008 PRM11 011 018 MOV #LDATA,R4 ;DATA PICKUP ADDRESS
009
010 PRM11 011 017 PRM11 011 015 1$: MOV R3,R1
011 PRM11 011 018 PRM11 011 014 MOV R4,R0 ;SETUP DATA PICKUP ADDRESS
012
013 TST VERIFY
014 017 022 BNE LD10V
015 PRM11 006 044 DPOSVR ;DEPOSIT & VERIFY
016 017 001 BCS LD10VR ;FAILED
017 $LRDIN=.
018 PRM11 011 017 ADD #1,(R3)+ ;INCREMENT 10 ADDRESS
019 PRM11 011 017 ADC (R3)
020 PRM11 011 017 TST -(R3)
021 PRM11 011 018 ADD #6,R4 ;SETUP NEXT DATA PICKUP ADDRESS
022 PRM11 011 016 SUB #3,R2 ;DECREMENT WORD COUNT
023 CONS11 002 007 BGT 1$ ;BR IF NOT DONE YET
024 013 081 BR $LLD2 ;BACK FOR NEXT LOAD FILE LINE
025
026 PRM11 011 018 2$: MOV #PGOADR,R4
027 PRM11 011 017 PRM11 011 018 MOV (R3)+,(R4)+ ;TRANSFER START ADDRESS
028 PRM11 011 017 PRM11 011 018 MOV (R3),(R4) ;TO GO ADDRESS
029 MOV #2,PGOCTL
030 008 003 JMP LDDONE
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 17␈↓'α
001 017 031 LD10VR: BMI LD10ER ;N-BIT SET DEPOSIT FAILED
002 017 031 BEQ LD10ER ;Z-BIT SET, EXAMINE FAILED
003 LD10VE=.
004 PRM11 011 014 PUSH R0
005 PRM11 004 007 $PMSG ;"10 ERR,ADR="
006 007 030 $$TEN
007 PRM11 011 014 MOV #L10ADR,R0
008 PRM11 004 025 PNTADR
009
010 PRM11 004 007 $PMSG
011 007 027 $$COR ;"COR="
012 PRM11 011 018 PRM11 011 014 MOV R4,R0
013 PRM11 004 023 PNT36
014
015 PRM11 004 007 $PMSG
016 007 028 $$ACT ;"ACT="
017 PRM11 011 014 POP R0
018 PRM11 004 023 PNT36
019 PRM11 004 012 PCRLF
020 016 017 BR $LRDIN
021
022 PRM11 011 015 PRM11 011 014 LD10V: MOV R1,R0
023 PRM11 006 040 EXAM ;EXAMINE PRESENT CONTENTS
024 017 031 BCS LD10ER ;CAN'T EXAMINE
025 PRM11 011 014 PRM11 011 015 MOV R0,R1
026 PRM11 011 018 PRM11 011 014 MOV R4,R0
027 PRM11 006 049 CMPR36 ;COMPARE WITH LOAD FILE
028 016 017 BCC $LRDIN ;OK
029 017 003 BR LD10VE ;BAD
030
031 PRM11 004 007 LD10ER: $PMSG ;"10 ERR,ADR="
032 007 030 $$TEN
033 PRM11 011 014 MOV #L10ADR,R0
034 PRM11 004 025 PNTADR
035 BEG11 002 007 JMP $CNTLC
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 18␈↓'α
001 ;DEVICE FILE DIRECTORY LOOKUP
002
003 PRM11 005 008 DEVFIL: SETFLG ;INIT DEVICE LINE COUNT
004 DEVLC
005 PRM11 003 036 TTPINI ;INIT TTY POINTERS
006 CLR $OUTBF
007 TST DEVTYP ;LOAD FROM WHAT DEVICE ?
008 018 019 BEQ DTFIL ; 0 = DECTAPE
009 CONS11 002 007 BMI 1$ ; -1 = ACT10
010 018 012 JMP RPFIL ; 1 = RP04
011
012 CONS11 005 004 .IIF NDF RPASB,RPFIL==$CMDER
013 .IF NDF MONASB
014 CONS11 005 004 1$: JMP $CMDER
015 .IFF
016 APT11 002 004 1$: JMP ACTFIL
017 .ENDC
018
019 DTFIL: TST FLOPPY
020 CONS11 030 016 BEQ 10$
021 PRM11 005 045 RXFILE ;FLOPPY
022 CONS11 003 018 BR 11$
023 PRM11 005 021 10$: DTAFILE
024 CONS11 002 007 11$: BCS 1$
025 004 003 JMP DTRPLD
026 022 024 1$: JMP $NONXF ;NON-EX FILE
027
028 ;DECTAPE FORMAT
029 ;FIRST DIRECTORY BLOCK = 102 (8)
030
031 ;FILE DIRECTORY BLOCK
032 ; LINK TO NEXT BLOCK
033 ; 1 - FILE NAME 1
034 ; 2 - FILE NAME 2
035 ; 3 - FILE EXTENSION
036 ; 4 - DATE
037 ; 5 - SPARE
038 ; 6 - START BLOCK #
039 ; 7 - LENGTH
040 ; 8 - END BLOCK #
041 ; 9 - SPARE
042 ;FILE DATA BLOCK
043 ; LINK TO NEXT BLOCK
044 ; 255 DATA WORDS
045
046 ;DECTAPE PROGRAM FILE SEARCH
047
048 PRM11 005 025 $DTAFILE:DTINIT ;DECTAPE INITIALIZATION
049 DTAFL1: TST FLOPPY
050 CONS11 030 011 BEQ 20$
051 PRM11 005 047 RXRDFL ;FLOPPY READ FILE
052 CONS11 013 027 BR 21$
053 PRM11 005 029 20$: DTRDFL ;READ UFD DIRECTORY BLOCK
054 CONS11 003 018 21$: BCS 11$ ;EOF, CAN'T FIND FILE
055 PRM11 011 014 PRM11 011 014 MOV (R0),R0 ;PUT FIRST BUFFER ADR IN R0
056 PRM11 011 015 MOV #28.,R1 ;28 ENTRIES IN DIRECTORY
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 19␈↓'α
001 PRM11 011 014 1$: MOV (R0)+,DIRST0 ;STORE RAD50 NAME
002 PRM11 011 014 MOV (R0)+,DIRST1
003 PRM11 011 014 MOV (R0)+,DTEXT ;STORE RAD50 EXT
004 PRM11 011 014 PRM11 011 014 CMP (R0)+,(R0)+ ;SKIP 2 WORDS
005 PRM11 011 014 MOV (R0)+,DTSTRT ;SAVE STARTING BLOCK #
006 PRM11 011 014 MOV (R0)+,DTLNGTH ;SAVE LENGTH
007 PRM11 011 014 PRM11 011 014 CMP (R0)+,(R0)+ ;MOVE TO NEXT ENTRY
008 PRM11 011 014 PRM11 011 015 PUSH <R0,R1>
009 PRM11 005 023 R50UPK ;UNPACK NAME
010 DIRST0,DIRST2
011 CONS11 030 016 BCS 10$
012 PRM11 005 023 R50UPK
013 DIRST1,DIRST3+1
014 CONS11 030 016 BCS 10$
015 PRM11 005 023 R50UPK ;UNPACK EXTENSION
016 DTEXT,DTEXTS
017 CONS11 030 016 BCS 10$ ;ERROR RETURN
018
019 TST DVDIRF ;DOING "DIR" ?
020 020 003 BNE $DTDI1 ;YES
021
022 PRM11 011 017 MOV #NAMBF,R3 ;LOAD ADDRESS OF INPUT DATA
023 PRM11 011 018 MOV #DIRST2,R4 ;LOAD ADDRESS OF TABLE
024 PRM11 011 014 MOV #6,R0 ;SET COUNT
025 PRM11 011 017 PRM11 011 018 3$: CMPB (R3)+,(R4)+ ;CHECK NAME DATA
026 CONS11 030 016 BNE 10$ ;BR IF NOT SAME
027 PRM11 011 014 DEC R0 ;DONE 6 TIMES ?
028 CONS11 005 001 BNE 3$ ;BR IF NOT
029 PRM11 011 017 MOV #EXTBF,R3 ;LOAD ADDRESS OF EXT INPUT
030 PRM11 011 018 MOV #DTEXTS,R4 ;LOAD ADDRESS OF EXT STOR
031 PRM11 011 014 MOV #3,R0 ;SET COUNT 3 CHARS
032 PRM11 011 017 PRM11 011 018 6$: CMPB (R3)+,(R4)+ ;CHECK EXT DATA
033 CONS11 030 016 BNE 10$ ;BR IF NOT SAME
034 PRM11 011 014 DEC R0 ;DONE 3 TIMES ?
035 CONS11 034 069 BNE 6$ ;BR IF NOT
036 PRM11 011 015 PRM11 011 014 POP <R1,R0>
037 MOV DTSTRT,DVBUF ;LOAD STARTING BLOCK
038 PRM11 008 043 EXIT ;NOW GO LOAD FILE
039 $DTDI2=.
040 PRM11 011 015 PRM11 011 014 10$: POP <R1,R0>
041 PRM11 011 015 DEC R1 ;BEEN THRU 28 ENTRIES ?
042 CONS11 002 007 BNE 1$ ;NOT YET
043 018 049 BR DTAFL1 ;TRY NEXT UFD BLOCK
044
045 PRM11 008 051 11$: EXITERR
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 20␈↓'α
001 ;DECTAPE/FLOPPY DIRECTORY ROUTINE
002
003 $DTDI1: CLR NAMBF
004 CLR DTEXT
005 CMP #020040,DIRST2 ;DON'T PRINT SPACES
006 CONS11 002 007 BEQ 1$
007
008 PRM11 004 007 $PMSG ;PRINT "FILE"
009 DIRST2
010
011 PRM11 004 013 PSPACE
012
013 PRM11 004 007 $PMSG ;PRINT "EXT"
014 DTEXTS
015
016 PRM11 013 005 PRM11 011 014 MOV #TAB,R0
017 PRM11 004 009 PNTCHR
018 PRM11 011 014 MOV DTLNGTH,R0
019 PRM11 004 019 PNTDEC ;PRINT NUMBER OF BLOCKS
020
021 PRM11 004 012 PCRLF
022 019 039 1$: BR $DTDI2 ;GO DO NEXT
023
024 PRM11 003 033 $DI: TTITRM
025 PRM11 004 027 PNORML
026 TST DEVTYP
027 020 034 BEQ $DTDIR ;DECTAPE
028 CONS11 002 007 BMI 1$ ;ILLEGAL ON ACT10
029 .LIF DF RPASB
030 CONS11 008 038 JMP $RPDIR ;RP04
031
032 CONS11 058 007 1$: JMP $CMDE
033
034 PRM11 005 008 $DTDIR: SETFLG
035 DVDIRF ;SET DIRECTORY FLAG
036 TST FLOPPY
037 CONS11 002 007 BEQ 1$
038 PRM11 005 045 RXFILE ;FLOPPY
039 CONS11 002 031 BR 2$
040 PRM11 005 021 1$: DTAFILE
041 BEG11 002 009 2$: JMP $CONSL
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 21␈↓'α
001 ;READ DEVICE FRAME SUBROUTINE
002
003 $DVFRAM:TST DVCNT ;USED ALL DATA ?
004 CONS11 002 007 BGT 1$ ;NO
005
006 PRM11 005 028 DVDATA ;YES, READ NEXT BLOCK
007 022 001 BCS DVEOF ;EOF
008
009 PRM11 011 014 1$: MOVB @DVADR,R0 ;GET ONE BYTE
010 INC DVADR ;INCREMENT PICKUP ADDRESS
011 DEC DVCNT ;COUNT IT
012 PRM11 011 014 BIC #177400,R0 ;CLEAR JUNK, CHAR IS 8 BITS
013 PRM11 011 014 ADD R0,$CKS11
014 022 020 BR $$DVX
015
016 ;READ DEVICE BUFFER SUBROUTINE
017
018 $DVDATA:
019 .IF DF RPASB
020 TST DEVTYP
021 CONS11 004 051 BNE 4$
022 .ENDC
023
024 TST FLOPPY
025 CONS11 002 007 BEQ 1$
026 PRM11 005 047 RXRDFL ;FLOPPY
027 CONS11 003 018 BR 11$
028 PRM11 005 029 1$: DTRDFL ;DECTAPE READ
029 CONS11 005 001 11$: BCS 3$ ;EOF
030 PRM11 011 014 2$: MOV (R0)+,DVADR ;SAVE BUFFER ADDRESS
031 PRM11 011 014 MOV (R0),DVCNT ;SAVE BUFFER BYTE COUNT
032 022 020 BR $$DVX
033
034 PRM11 008 051 3$: EXITERR ;EOF
035
036 .IF DF RPASB
037 PRM11 011 014 4$: MOV #FILDSB,R0
038 PRM11 005 036 RPRDFL ;RP04 FILE DATA BLOCK READ
039 CONS11 002 031 BCC 2$
040
041 PRM11 011 014 CMP #1,R0 ;ERROR, EOF ?
042 022 001 BEQ DVEOF ;YES
043 PRM11 005 042 RPERROR ;NO, JUST ERROR
044 .ENDC
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 22␈↓'α
001 DVEOF: TST LDCNTL ;EOF, PRINTING A HELP FILE ?
002 CONS11 002 007 BMI 1$ ;YES
003 PRM11 008 006 PMSG <\EOF ?>
004 BEG11 002 007 JMP $CNTLC
005 APT11 003 001 1$: JMP DAHLPD
006
007 ;ASSEMBLE ONE 16 BIT DATA WORD
008
009 PRM11 005 043 $DVWRD: DVFRAM ;READ FRAME
010 PRM11 011 014 MOV R0,LTMP
011 PRM11 005 043 DVFRAM ;GET ANOTHER FRAME
012 PRM11 011 014 SWAB R0 ;PLACE IN HIGH ORDER BYTE
013 PRM11 011 014 BIS R0,LTMP ;PUT 2 BYTES TOGETHER
014 PRM11 011 014 MOV LTMP,R0 ;PUT BACK IN R0
015 022 020 BR $$DVX
016
017 ;DECTAPE INITIALIZATION
018
019 $DTINIT:MOV #102,DVBUF ;SET STARTING BLOCK NUMBER
020 PRM11 008 043 $$DVX: EXIT
021
022 ;FILE NOT FOUND
023
024 $NONXF: TST DIAFLG ;DOING "DIAMON" FILE SELECTION ?
025 CONS11 002 007 BEQ 1$ ;NO
026 CONS11 048 034 JMP DIANF ;YES, "DIAMON" FILE NOT FOUND
027
028 PRM11 008 006 1$: PMSG <NON-EX FILE>
029 BEG11 002 007 JMP $CNTLC
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 23␈↓'α
001 ;RAD50 UNPACK SUBROUTINE
002
003 PRM11 011 021 $R50UPK:ADD #4,12(SP) ;RETURN OVER TRAILING PARAMETERS
004 PRM11 011 014 PUSH R0
005 PRM11 011 019 MOV $EMADR,R5
006 PRM11 011 019 PRM11 011 018 MOV (R5)+,R4 ;RAD50 ADDRESS TO R4
007 PRM11 011 018 PRM11 011 018 MOV (R4),R4 ;RAD50 VALUE TO R4
008 PRM11 011 019 PRM11 011 017 MOV (R5),R3 ;STORE ADDRESS TO R3
009 PRM11 011 015 MOV #2,R1
010 MOV #-1,-(6) ;SET STACK STOP
011 PRM11 011 018 1$: MOV R4,-(6) ;SAVE PREVIOUS VALUE
012 PRM11 011 018 CLR R4 ;CLEAR R4 FOR NEXT REMAINDER
013 PRM11 011 014 2$: MOV (6),R0 ;TAKE 3/4 OF VALUE
014 PRM11 011 022 PRM11 011 014 BISB @PC,R0 ;???????
015 PRM11 011 014 PRM11 011 016 MOV R0,R2
016 PRM11 011 016 ROR R2
017 PRM11 011 016 ASR R2
018 PRM11 011 016 PRM11 011 014 SUB R2,R0
019 PRM11 011 014 BIC #37,R0 ;PREPARE TO TAKE 1/4 OF RESULT
020 PRM11 011 014 SUB R0,(6) ;BUT REDUCE ORIGINAL BY 3/4
021 PRM11 011 014 ROR R0 ;GET 3/16 OF ORIGINAL
022 PRM11 011 014 ASR R0
023 PRM11 011 014 SUB R0,(6)
024 PRM11 011 014 PRM11 011 018 ADD R0,R4 ;THIS GIVES 1ST APPROXIMATION
025 CMP (6),#47 ;LOW AS POSSIBLE ?
026 CONS11 002 031 BHI 2$ ;IF SO THIS IS BYTE REQUIRED
027 PRM11 011 018 ASR R4
028 PRM11 011 018 ASR R4
029 PRM11 011 018 ASR R4
030 PRM11 011 015 DEC R1 ;DONE 2 BYTES ?
031 CONS11 002 007 BNE 1$ ;BR IF NOT
032 PRM11 011 018 CMPB R4,#47 ;LAST BYTE TOO BIG ?
033 CONS11 004 051 BHI 4$ ;IF YES, ERROR
034 PRM11 011 018 3$: TSTB R4 ;SPACE ?
035 CONS11 034 069 BEQ 6$ ;IF YES, ADD 40
036 PRM11 011 018 CMPB R4,#35 ;IF UNUSED CODE ....
037 CONS11 024 048 BNE 5$
038 PRM11 011 018 4$: MOV #'X,R4 ;ASCII X TO R4
039 CONS11 019 049 BR 9$ ;GO TO ERROR EXIT
040 PRM11 011 018 5$: CMPB R4,#33 ;$ ?
041 CONS11 035 063 BEQ 8$ ;IF YES, GO ADD 11
042 CONS11 035 053 BHI 7$ ;FOR DIGIT OR DOT ADD 22
043 PRM11 011 018 ADD #40,R4 ;FOR LETTER ADD 100
044 PRM11 011 018 6$: ADD #16,R4
045 PRM11 011 018 7$: ADD #11,R4
046 PRM11 011 018 8$: ADD #11,R4
047 PRM11 011 018 9$: MOVB R4,(3)+ ;STORE RESULT
048 PRM11 011 018 MOV (6)+,R4 ;GET NEXT BYTE
049 CONS11 005 001 BPL 3$ ;BR IF NOT STACK STOP
050 PRM11 011 014 POP R0
051 022 020 $$$DVX: BR $$DVX
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 24␈↓'α
001 ;DECTAPE READ/WRITE FILE ROUTINES
002
003 $DTRDFL:TST DVBUF ;ANY DATA BLOCKS REMAINING ?
004 024 007 BNE $DTRFL ;YES
005 PRM11 008 051 $$DTXE: EXITERR ;NO
006
007 $DTRFL: MOV DVBUF,DTBLK ;SET REQUESTED BLOCK
008 MOV #DVBUF,CASAV ;SET BUFFER ADDRESS
009 MOV #-256.,WCSAV ;SET WORD COUNT
010
011 PRM11 005 032 DTREAD ;DECTAPE READ
012 024 017 BCS $$DTXC ;FAILED
013
014 024 026 PRM11 011 014 MOV #$DTINFO,R0
015 PRM11 008 043 $$DTX: EXIT
016
017 BEG11 002 007 $$DTXC: JMP $CNTLC ;FAILED
018
019 $DTWTFL:MOV #DVBUF,CASAV
020 MOV #-256.,WCSAV
021
022 PRM11 005 033 DTWRT ;WRITE DECTAPE
023 024 015 BCC $$DTX ;OK
024 024 017 BR $$DTXC ;FAILED
025
026 $DTINFO:DVBUF+2 ;FIRST USABLE DATA WORD
027 510. ;BYTE COUNT
028
029 PRM11 011 014 $DTBASE:MOV #DTBLK,R0 ;RETURN PARAMETER BASE ADDRESS
030 024 015 BR $$DTX
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 25␈↓'α
001 ;DECTAPE DEVICE READ/WRITE ROUTINE
002
003 PRM11 040 008 PRM11 011 014 $DTREAD:MOV #TCRDATA+TCDO,R0
004 025 008 BR $DTXFR
005
006 PRM11 040 008 PRM11 011 014 $DTWRT: MOV #TCWDATA+TCDO,R0
007
008 PRM11 011 014 $DTXFR: MOV R0,DTXCMD ;SAVE COMMAND
009 MOV #3,TRYCTR ;SET MAXIMUM TRY COUNT, 3.
010
011 PRM11 011 018 $DTXF1: MOVB DTUNIT+1,R4 ;SETUP UNIT
012 PRM11 040 025 MOV WCSAV,@#TCWC ;SETUP WORD COUNT
013 PRM11 040 026 MOV CASAV,@#TCBA ;SETUP READ ADDRESS
014 PRM11 040 008 PRM11 011 014 MOV #TCRNUM+TCDO,R0
015 PRM11 040 023 PRM11 011 015 MOV #TCCM,R1
016 PRM11 040 012 PRM11 011 017 MOV #TCREV,R3
017 PRM11 011 016 MOV DTBLK,R2 ;SETUP BLOCK # AND DIRECTION
018 025 023 BPL $DTXF2
019 PRM11 011 016 NEG R2
020 PRM11 011 018 ADD #10,R4 ;REVERSE, SET REV INDICATOR
021 PRM11 011 017 PRM11 011 014 BIS R3,R0 ;START UP IN REVERSE
022
023 $DTXF2: MOV #6,REVCNT ;SET MAXIMUM REVERSAL COUNT, 6.
024 CLR INTSW ;SET INTSW FOR SEARCH
025
026 PRM11 011 017 $DTXF3: PUSH R3
027 PRM11 011 022 SUB11 025 003 JSR PC,$TIRDY ;ANY OPERATOR INTERRUPTS ?
028 CONS11 002 031 BCS 2$ ;NO
029 PRM11 011 017 MOVB $TICHR,R3 ;GET CHAR
030 PRM11 011 017 BICB #200,R3
031 PRM11 013 023 PRM11 011 017 CMPB #CNTRLC,R3 ;IS IT CONTROL C ?
032 CONS11 002 031 BNE 2$ ;NO
033 PRM11 011 015 BIC #116,(R1) ;YES, STOP DECTAPE
034 SUB11 023 025 JMP $TICC ;AND ABORT
035 PRM11 011 017 2$: POP R3
036 PRM11 011 014 BIS DTUNIT,R0 ;SELECT UNIT
037 PRM11 011 014 PRM11 011 015 MOV R0,(R1) ;SET TCCM
038 PRM11 040 018 PRM11 011 015 1$: BIT #TCERR+TCRDY,(R1) ;WAIT FOR DONE OR ERROR
039 CONS11 002 007 BEQ 1$
040 026 022 BMI DTER ;BR IF ERROR
041 TSTB INTSW ;SEARCH OR TRANSFER ?
042 026 049 BNE DATINT ;BR IF TRANSFER
043 PRM11 040 027 PRM11 011 016 CMP @#TCDT,R2 ;BLOCK MATCH ?
044 026 013 BEQ DTSRF ;BR IF YES
045 026 006 BGT DTSRE ;BR IF LARGER
046 PRM11 011 017 PRM11 011 015 BIT R3,(R1) ;SMALLER, REVERSE ?
047 025 026 BEQ $DTXF3 ;FORWARD, CONTINUE DIRECTION
␈↓& PROGRAM FILE LOADER, 4-SEPT-75 DTA11.PAL[KL,SYS] 10/05/77 Page 26␈↓'α
001 PRM11 040 027 DTSRA: ADD #3,@#TCDT ;+3 TO TCDT
002 PRM11 040 027 PRM11 011 016 CMP @#TCDT,R2 ;LOWER BY 3 OR MORE ?
003 026 041 BLOS DTREV ;YES, GO REVERSE
004 025 026 BR $DTXF3 ;NO, CONTINUE DIRECTION
005
006 PRM11 011 017 PRM11 011 015 DTSRE: BIT R3,(R1) ;BLK HIGH, CHECK DIRECTION
007 025 026 BNE $DTXF3 ;BR IF REV, CONTINUE DIRECTION
008 PRM11 040 027 SUB #3,@#TCDT ;FWD, -3 TO TCDT
009 PRM11 011 016 PRM11 040 027 CMP R2,@#TCDT ;HIGHER BY 3 OR MORE ?
010 026 041 BLE DTREV ;REVERSE IF HIGHER BY 3 OR MORE
011 025 026 BR $DTXF3 ;NO, CONTINUE DIRECTION
012
013 PRM11 040 024 PRM11 011 018 DTSRF: CMPB @#TCCM1,R4 ;BLOCK SAME, SAME DIRECTION ?
014 025 026 BNE $DTXF3 ;BR IF NOT, CONTINUE SEARCH
015 $DTXF4: COMB INTSW ;WANTED ???
016 PRM11 011 014 MOVB DTXCMD,R0 ;SET UP XFER COMMAND
017 TST DTBLK
018 025 026 BPL $DTXF3 ;FORWARD READ
019 PRM11 011 017 PRM11 011 014 BIS R3,R0 ;REVERSE READ
020 025 026 BR $DTXF3
021
022 DTER: TSTB INTSW ;SEARCH OR XFER ?
023 026 026 BNE DTERA ;BR IF XFER
024 PRM11 040 022 TST @#TCST ;END ZONE ?
025 026 041 BMI DTREV ;BR IF YES, TO REVERSE
026 PRM11 040 020 PRM11 040 022 DTERA: BIT #TCSOFT,@#TCST ;CHECK FOR SOFT ERROR
027 026 037 BEQ DTHDER ;BR IF NOT SOFT ERROR
028 DECB TRYCTR ;3RD TRY ?
029 025 026 BEQ $DTXF3 ;BR IF YES
030 025 011 BR $DTXF1 ;GO TRY AGAIN
031
032 PRM11 011 015 DTERB: BIC #116,(R1) ;STOP DECTAPE
033 PRM11 008 006 PMSG <?SOFT>
034 APT11 004 006 DTERC: PMSG < DTA ERR>
035 PRM11 008 051 EXITERR
036
037 PRM11 011 015 DTHDER: BIC #116,(R1) ;STOP DECTAPE
038 PRM11 008 006 PMSG <?HARD>
039 026 034 BR DTERC
040
041 PRM11 011 017 PRM11 011 014 DTREV: ADD R3,R0 ;CHANGE DIRECTION
042 PRM11 012 028 PRM11 011 014 BIC #BIT12,R0
043 DTREVC: DECB REVCNT ;6TH REVERSAL ?
044 025 026 BNE $DTXF3 ;BR IF NOT
045 PRM11 011 015 BIC #116,(R1) ;STOP DECTAPE
046 PRM11 008 006 PMSG <?REV>
047 026 034 BR DTERC
048
049 PRM11 011 015 DATINT: BIC #116,(R1) ;STOP DECTAPE
050 PRM11 008 043 EXIT ;DONE
␈↓& ASCR50 ASCII TO RAD50 CONVERSION ROUTINE DTA11.PAL[KL,SYS] 10/05/77 Page 27␈↓'α
001 .SBTTL ASCR50 ASCII TO RAD50 CONVERSION ROUTINE
002
003 ;CALL:
004 ; ASCR50
005 ; ASCII ADDRESS
006 ; RAD50 ADDRESS
007 ;NINE BYTES OF ASCII INPUT
008 ;THREE WORDS OF RAD50 OUTPUT
009
010 PRM11 011 021 $ASCR50:ADD #4,12(SP) ;RETURN OVER TRAILING PARAMETERS
011 PRM11 011 014 PUSH R0
012 PRM11 011 019 MOV $EMADR,R5
013 PRM11 011 019 PRM11 011 015 MOV (R5)+,R1 ;SETUP ASCII ADDRESS
014 PRM11 011 019 PRM11 011 018 MOV (R5),R4 ;SETUP RAD50 STORAGE ADDRESS
015 PRM11 011 017 MOV #066600,R3
016 PRM11 011 018 1$: CLR (R4) ;RESULT WORD
017 027 043 PRM11 011 014 2$: MOV #30$,R0 ;SETUP SCAN TABLE
018 PRM11 011 014 PRM11 011 016 3$: MOVB (R0)+,R2 ;PUT CONVERSION IN R2
019 CONS11 030 011 BEQ 20$ ;IF END OF TABLE, ERROR
020 PRM11 011 015 PRM11 011 014 CMPB (R1),(R0)+ ;COMPARE ASCII CHAR
021 CONS11 030 011 BLO 20$ ;IF LESS THAN TABLE ENTRY, ERROR
022 PRM11 011 015 PRM11 011 014 CMPB (R1),(R0)+
023 CONS11 005 001 BHI 3$ ;LOOP, HAVEN'T FOUND YET
024 PRM11 011 015 PRM11 011 014 MOVB (R1)+,R0 ;FOUND, ASCII CHAR TO R0
025 PRM11 011 016 PRM11 011 014 ADD R2,R0 ;CONVERT
026 PRM11 011 018 ASL (R4)
027 PRM11 011 018 ASL (R4)
028 PRM11 011 018 ASL (R4)
029 PRM11 011 018 PRM11 011 014 ADD (R4),R0
030 PRM11 011 018 ASL (R4)
031 PRM11 011 018 ASL (R4)
032 PRM11 011 014 PRM11 011 018 ADD R0,(R4)
033 PRM11 011 017 ASL R3 ;SHIFT RAD50 WORD COUNTER
034 CONS11 002 031 BMI 2$ ;NOT DONE WITH THIS RAD50 YET
035 CONS11 030 016 BEQ 10$ ;IF 0, ALL DONE
036 PRM11 011 018 TST (R4)+ ;STEP TO NEXT RAD50 WORD
037 CONS11 002 007 BR 1$ ;GO DO NEXT
038 PRM11 011 014 10$: POP R0
039 PRM11 008 043 EXIT
040 PRM11 011 014 20$: POP R0
041 PRM11 008 051 EXITERR
042
043 30$: .BYTE -40,' ,' ;SPACE
044 .BYTE -11,'$,'$ ;DOLLAR SIGN
045 .BYTE -22,'.,'. ;PERIOD
046 .BYTE -22,'0,'9 ;DIGITS
047 .BYTE -100,'A,'Z ;UPPER CASE LETTERS
048 ; .ENABL LC
049 .BYTE -140,'a,'z ;LOWER CASE LETTERS
050 .BYTE 0 ;INDICATE THE END OF THE TABLE
051 .EVEN
Symbol Table for: DTA11.PAL[KL,SYS] 10/05/77 Page I
$$$DVX 023*051 $LRDIN = 016 017 11$ 008 029 21$ 012 029 7$ 002 072 LD11DN 009 043
$$$NAM = 003 054 $NAMEX 003 003 11$ 012 018 21$ 018 054 7$ 023 045 LDBIN 010 003
$$ACT 007 028 $NONXF 022 024 11$ 013 073 3$ 003 031 70$ 003 006 LDBIN1 010 004
$$COR 007 027 $R50UP 023 003 11$ 018 024 3$ 006 028 8$ 023 046 LDBIN2 010 017
$$DTX 024 015 1$ 003 014 11$ 019 045 3$ 009 001 9$ 023 047 LDBIN3 010 025
$$DTXC 024 017 1$ 004 017 11$ 021 029 3$ 011 001 96$ 003 051 LDBINE 010 022
$$DTXE 024*005 1$ 004 039 12$ 002 078 3$ 014 008 97$ 003 044 LDCKSM 007*001
$$DVX 022 020 1$ 005 024 12$ 008 049 3$ 015 020 98$ 003 049 LDCLR 006 009
$$LD11 007 026 1$ 005 037 12$ 014 016 3$ 019 025 99$ 003 016 LDCNV 006 010
$$NAM 003 059 1$ 006 011 13$ 003 047 3$ 021 034 ACT = 007*028 LDCRAM 013 054
$$RAM 007 029 1$ 007 005 13$ 008 025 3$ 023 034 ADR = 007 026 LDCZRO 013 038
$$TEN 007 030 1$ 008 011 14$ 002 085 3$ 027 018 ADR = 007 030 LDDONE 008 003
$ASCR5 027 010 1$ 008 022 16$ 002 090 30$ 027 043 ARE 013 024 LDDRAM 012 006
$DI 020 024 1$ 010 034 18$ 008 027 31$ 009 011 COR = 007*027 LDELVN 008 015
$DTAFI 018 048 1$ 012 011 19$ 008 024 32$ 009 012 COR = 007*029 LDEOL 006 037
$DTBAS 024 029 1$ 013 060 2$ 003 029 33$ 009 034 DATINT 026 049 LDERR 006*035
$DTDI1 020 003 1$ 015 026 2$ 004 030 38$ 009 006 DEFEXT 002 099 LDLTR 007 024
$DTDI2 = 019 039 1$ 016 010 2$ 005 041 39$ 009*004 DEVFIL 018 003 LDOCT 006 032
$DTDIR 020 034 1$ 018 014 2$ 006 025 4$ 002 044 DTAFL1 018 049 LDPRO1 005 029
$DTINF 024 026 1$ 018 016 2$ 007 012 4$ 006 022 DTER 026 022 LDPRO2 006 001
$DTINI 022 019 1$ 018 026 2$ 009 042 4$ 013 062 DTERA 026 026 LDPRO3 006 003
$DTRDF 024 003 1$ 019 001 2$ 010 036 4$ 021 037 DTERB 026*032 LDPROC 005 011
$DTREA 025 003 1$ 020 022 2$ 012 035 4$ 023 038 DTERC 026 034 LDRDIN 016 006
$DTRFL 024 007 1$ 020 032 2$ 013 046 41$ 013 068 DTFIL 018 019 LDTEN 015 009
$DTWRT 025 006 1$ 020 040 2$ 014 001 42$ 013 077 DTHDER 026 037 LDTENZ 015*017
$DTWTF 024 019 1$ 021 009 2$ 015 033 5$ 002 061 DTREV 026 041 LDTYPE 007 016
$DTXF1 025 011 1$ 021 028 2$ 016 026 5$ 003 055 DTREVC 026*043 LJMP 011 022
$DTXF2 025 023 1$ 022 005 2$ 020 041 5$ 023 040 DTRPLD 004 003 LLD1 004 007
$DTXF3 025 026 1$ 022 028 2$ 021 030 50$ 002 026 DTSRA 026*001 LLD2 004 011
$DTXF4 026*015 1$ 023 011 2$ 023 013 51$ 002 032 DTSRE 026 006 LLD3 004 020
$DTXFR 025 008 1$ 025 038 2$ 025 035 52$ 002 042 DTSRF 026 013 LLD4 004 023
$DVDAT 021 018 1$ 027 016 2$ 027 017 53$ 002 036 DVEOF 022 001 LLDONE 005 001
$DVFRA 021 003 10$ 003 052 20$ 002 083 54$ 002 037 DVLOAD 002 017 NOTE 013*020
$DVWRD 022 009 10$ 010 031 20$ 012 037 6$ 002 065 LD10ER 017 031 ORDER 013*021
$LDBNE 010 023 10$ 018 023 20$ 018 053 6$ 019 032 LD10V 017 022 RPFIL = 018 012
$LINER 007 033 10$ 019 040 20$ 027 040 6$ 023 044 LD10VE = 017 003 WC = 013 032
$LLD2 = 013 081 10$ 027 038 21$ 002 094 66$ 002 075 LD10VR 017 001